Complex processors are often tested after manufacture and prior to customer shipment. Typically this testing includes (a) evaluating the processor's internal memory cache, and (b) repairing the memory cache if faults are found. To facilitate testing, the processor's designer uses a workstation to create a macro script. The macro script is a set of instructions written in low level assembly language with predefined macros that aid in constructing complex test sequences. The macro script is expanded into an assembly language source sequence that is then assembled into machine code.
The machine code is loaded into non-volatile memory of a testing device. Typically this testing device varies power supply voltages to the processor during testing to verify correct processor functionality over its full operational voltage range. Each memory block of the memory cache is individually tested. The memory cache includes redundant memory blocks to be used in place of any faulty memory blocks—so long as the faulty memory blocks are detected during testing of the processor. The processor has a one-time programmable (“OTP”) memory (also known as a fuse) that encodes the faulty memory blocks such that the redundant memory blocks are later used in place of the faulty memory blocks, thereby repairing the memory cache. The processor also contains a built-in-self-test engine (“BISTE”) that reads the OTP memory to map the redundant memory blocks to the faulty memory blocks in repairing the memory cache. The BISTE is controlled by the machine code when executed by the processor.
While the use of macros aid the designer in creating complex test sequences, the macro script and expanded assembly language source are difficult to comprehend and maintain due to their low-level interaction with the processor and the BISTE. The time and cost associated with developing and modifying macro scripts to accommodate new or different tests is therefore significant.